Compactando / descompactando arquivos simultaneamente [Melhorado]
Publicado por Sandro Marcell 18/07/2007
[ Hits: 6.630 ]
Homepage: http://sanmarcell.wordpress.com
Este script compacta/descompacta arquivos simultaneamente, sem necessidade de parâmetros extras.
Ex.: nome_script arq.txt arq.pdf arq.gz arq.tar.gz
Os arquivos arq.txt e arq.pdf serão compactados; já os arquivs arq.gz e arq.tar.gz serão descompactados.
Está é a versão Shell Bash de um script Tcl que postei aqui no VOL.
Falou!!!
#!/bin/bash
#
# Compacte/descompacte arquivos simultaneamente.
# (Versão Shell Bash)
#
# Autor: Sandro Marcell (sandro_marcell@yahoo.com.br)
#
# Uso: nome_script arquivo1 [arquivoN]
#
# Obs.:
# É possível o uso do metacaractere (*)
# São necessários os programas: tar, gzip e bzip2
# Realçando saída do comando 'echo':
Echo () { echo -e "\e[1m$*\e[m" ; }
# Checando parâmetros:
[ -z $BASH_ARGC ] && Echo "Uso: $(basename $0) arquivo1 [arquivoN]" && exit
# Simples avisos:
Aguarde () { Echo "Descompactando..." ; sleep 1 ; }
Aguarde2 () { Echo "Compactando..." ; sleep 1 ; }
# Arquivo de log:
LOG=/tmp/$(basename $0)-$USER.log
# Função que testa código de retorno:
Testando () {
[ $? == 0 ] && Echo "Arquivo descompactado!" \
|| Echo "-> Erro! Mais detalhes em $LOG"
}
# Início do loop:
for A ; do
# Testes condicionais:
[ ! -e $A ] && Echo "-> Arquivo não encontrado." && continue
[ ! -O $A ] && Echo "-> Acesso negado." && continue
# Compactar ou descompactar?
case $A in
# Descompactando...
*.tar.gz | *.tgz)
Aguarde
tar -zxf $A 2>> $LOG
Testando $?
;;
*.gz)
Aguarde
gunzip $A 2>> $LOG
Testando $?
;;
*.tar.bz2 | *.tbz)
Aguarde
tar -jxf $A 2>> $LOG
Testando $?
;;
*.bz2)
Aguarde
bunzip2 $A 2>> $LOG
Testando $?
;;
*)
# Compactando...
[ -d $A ] && {
Aguarde2
tar -czf $A.tar.gz $A 2>> $LOG
[ $? == 0 ] && Echo "Diretório compactado!" \
|| Echo "-> Erro! Mais detalhes em $LOG"
} || {
Aguarde2
gzip -f9 $A 2>> $LOG
[ $? == 0 ] && Echo "Arquivo compactado!" \
|| Echo "-> Erro! Mais detalhes em $LOG"
}
;;
esac
done
#Fim
Instalador do LOIC (Low Orbit Ion Cannon)
Abrindo e Fechando a Gaveta do CD-Rom de Forma Interativa
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como fazer a conversão binária e aplicar as restrições no Linux
Como quebrar a senha de um servidor Linux Debian
Como bloquear pendrive em uma rede Linux
Um autoinstall.yaml para Ubuntu com foco em quem vai fazer máquina virtual
Instalar GRUB sem archinstall no Arch Linux em UEFI Problemático
Fiz uma pergunta no fórum mas não consigo localizar [RESOLVIDO] (21)









